<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <!-- 
        生成器函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同

     -->

    <script>
        // 生成器其实就是一个特殊的函数
        //用来进行异步编程 纯回调函数 node fs, ajax, mongodb
        //函数代码的分隔符,调用一次next执行一段yield
        function * gen () {
            console.log(1111)
            yield '一只没有耳朵'
            
            console.log(2222)
            yield '一只没有尾巴'
            console.log(3333)

            yield '真奇怪'
            console.log(4444)
        }

        let iterator = gen() //迭代器对象 可以调用next方法
        // console.log(iterator)
        iterator.next() //调用next方法才会执行 
        console.log(iterator.next()) // {value: '一只没有耳朵', done: false}
        for(let v of gen()) {
            console.log(v) // 返回结果是yield后面的值或表达式
        }

    </script>
</body>
</html>